1. Field of the Invention
The present application relates to computer/communication networking and in particular relates to improved methods for detecting and avoiding network congestion and for reducing retransmission latencies in packetized protocols applied to network communications.
2. Discussion of Related Art
Many present day communication networks exchange packets of information between nodes coupled to a common communication medium. The nodes may be, for example, computing devices, storage devices for storing information, or other communication or network appliances for generating, receiving, storing, forwarding or routing the packets of information. The communication medium may be widely distributed as in a so-called wide area network (“WAN”) or localized within an enterprise as in a so-called local are network (“LAN”). The information be exchanged between nodes is generally subdivided into one or more packets. Each packet may include some subset of the total information to be exchanged between nodes over the network. Packets may be fixed or variable in size in accordance with the particular protocols and communication media employed. Further, each packet may represent a unit of information to be verified and acknowledged between the nodes in accordance with the particular protocols and media employed.
For example, in TCP/IP protocols applied to Ethernet communication media, information is subdivided into one or more packets of variable sizes less than a pre-determined maximum size. Packets are initially transmitted in a sequential order corresponding to the order of the information to be exchanged. Individual packets are each identified by a sequence ID field to indicate their proper order relative to one another. The receiving node(s) may then reassemble the received packets into the originally transmitted information.
In TCP/IP networks and other packetized networks, packets may be lost in transmission for various reasons. For example, a noisy communication medium (one having a low signal to noise ratio) may cause errors in the transmitted packets. Another reason for packet loss is congestion on the communication medium. Ethernet and other communication media allow devices to communicate over multiple segments of communication links through one or more intermediate nodes or devices. Where the multiple links vary in speed or where the intermediate device(s) are of variable processing capability, a sequence of packets transmitted from a sender to a receiver may cause congestions. Packets moving from a faster network segment or node to a slower segment may over-run the available bandwidth of the slower link or node. If the intermediate node detects such congestion it may discard received packets from its internal queues. Such congestion may be more common where multiple transmitters attempt to forward packets through a common segment or node. However, even a single node may generate and transmit packets so quickly that it may, alone, utilize all available bandwidth. Such saturation of the communication medium can cause packet loss if the receiving intermediate node(s) or segment(s) cannot process the received packets quickly enough.
When packets are lost, TCP/IP and other common protocols may cause retransmission of packets that were lost and all subsequent packets from that point forward (in the sequence of transmitted packets). Such retransmissions are costly in terms of elapsed time to complete the desired transmission and in terms of bandwidth utilization since information (packets) previously transmitted must be transmitted again. In some presently known protocols (such as the so-called Reno version of TCP/IP), the sender determines that a packet has been missed by the receiving node when the sending node receive three consecutive acknowledgement messages (i.e., TCP/IP ACK messages) each indicating a duplicate sequence ID value.
To avoid such costly packet loss and the associated retransmissions, present TCP/IP (and other) protocols use techniques to attempt to estimate the available bandwidth on the communication medium and then to use the estimated available bandwidth to limit the transmitting node in hopes of thereby avoiding congestion and the resulting packet loss and performance degradation. Presently known techniques, such as those practiced in the present-day Reno version of the TCP/IP protocols (“Reno TCP/IP”), attempt to avoid congestion by predicting the available bandwidth of the communication medium and then limiting the transmitting node to a fixed percentage thereof. RFC2581 provides specifications for the TCP/IP protocol for presently known techniques to reduce congestion packet loss and the associated packet retransmission. RFC2581 and other related TCP/IP specifications are readily available to those of ordinary skill in the art and may be found, for example, at http://www.rfc-editor.org/rfc.html. However, these presently practiced techniques predict the available bandwidth using essentially static information regarding the communication medium at a fixed point in time. Further, present techniques, such as those in Reno TCP/IP, often intentionally generate packet loss conditions in order to determine the available bandwidth on the communication medium.
It is therefore an ongoing challenge to detect and avoid congestion on a communication network. It is a further ongoing challenge to reduce the time required to detect a lost packet and to retransmit any necessary packets in response to such detection.